#include "MainController.h"
#include "Camera.h"

/*****************
TODO :
	- Sperarer Wiimote controller et lunette COntroller
	- Detruire tout les pointeurs !!!! lors de la fermeture de l'application !!!!!!




******************/

MainController * MainController::mainControleurInstance = 0;

/** @brief constructeur
*   
*		Initialise le moteur, instancie la Scene et le Menu et la wiimote
*/
MainController::MainController(void){
	device = irr::createDevice( irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(800,600), 32, false, true, false, 0);
	scene = new Scene(device);
	wiimote = new _Wiimote();
	menu = new Menu(device ,false , wiimote->isConnected() );
}

MainController::~MainController(void)
{
}



/** @brief methode qui lance l'application
*   
*/
void MainController::start(){
	scene->createScene();
	scene->activateMenu(true);
	eventManager = new EventManager(device, menu, new Camera(device->getSceneManager()->getActiveCamera()), scene->addCursor(10) );
	device->setEventReceiver(eventManager);
	if ( wiimote->isConnected() ){
		wiimoteController = new WiimoteController(wiimote->getWiimoteBase(), NULL);
	}
	while( scene->drawScene() ){
		if ( wiimote->isConnected() ){
			wiimoteController->update();
			irr::core::vector3df v = wiimote->Point3D();
			device->getSceneManager()->getSceneNodeFromId(10)->setPosition(v);
		}

    }
}


irr::IrrlichtDevice * MainController::getDevice(){
	return device;
}

MainController* MainController::getMainControleurInstance(){
	if (!mainControleurInstance) {
		mainControleurInstance = new MainController();
	}
	return mainControleurInstance ;
}


